home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
SGI Developer Toolbox 6.1
/
SGI Developer Toolbox 6.1 - Disc 4.iso
/
public
/
fax
/
src
/
util
/
notify.awk
< prev
next >
Wrap
Text File
|
1994-08-01
|
6KB
|
192 lines
#! /bin/sh
# $Header: /usr/people/sam/fax/util/RCS/notify.awk,v 1.1 1994/04/06 18:31:43 sam Rel $
#
# FlexFAX Facsimile Software
#
# Copyright (c) 1990, 1991, 1992, 1993, 1994 Sam Leffler
# Copyright (c) 1991, 1992, 1993, 1994 Silicon Graphics, Inc.
#
# Permission to use, copy, modify, distribute, and sell this software and
# its documentation for any purpose is hereby granted without fee, provided
# that (i) the above copyright notices and this permission notice appear in
# all copies of the software and related documentation, and (ii) the names of
# Sam Leffler and Silicon Graphics may not be used in any advertising or
# publicity relating to the software without the specific, prior written
# permission of Sam Leffler and Silicon Graphics.
#
# THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF ANY KIND,
# EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY
# WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
#
# IN NO EVENT SHALL SAM LEFFLER OR SILICON GRAPHICS BE LIABLE FOR
# ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND,
# OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
# WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF
# LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE
# OF THIS SOFTWARE.
#
#
# Awk support program for notify shell script. This
# stuff is broken out into a separate file to avoid
# overflowing the exec arg list on some systems like SCO.
#
#
# Construct a return-to-sender message.
#
func returnToSender()
{
printf "\n ---- Unsent job status ----\n\n"
printf "%11s: %s\n", "Destination", number;
printf "%11s: %s\n", "Sender", sender;
printf "%11s: %s\n", "Mailaddr", mailaddr;
if (modem != "any")
printf "%11s: %s\n", "Modem", modem;
printf "%11s: %u (mm)\n", "PageWidth", pagewidth;
printf "%11s: %.0f (mm)\n", "PageLength", pagelength;
printf "%11s: %.0f (lpi)\n", "Resolution", resolution;
printf "%11s: %s\n", "Status", status;
printf "%11s: %u (consecutive failed calls to destination)\n",
"Dials", ndials;
printf "%11s: %u (attempts to send current page)\n",
"Attempts", ntries;
printf "%11s: %u (directory of next page to send)\n",
"Dirnum", dirnum;
if (nfiles > 0) {
printf "\n ---- Unsent files submitted for transmission ----\n\n";
printf "This archive was created with %s, %s, and %s.\n",
tar, compressor, encoder;
printf "The original files can be recovered by applying the following commands:\n";
printf "\n";
printf " %s # generates rts.%s.Z file\n", decoder, tar;
printf " %s rts.%s.Z | %s xvf - # generates separate files\n",
decompressor, tar, tar;
printf "\n";
printf "and the job can be resubmitted using the following command:\n";
printf "\n";
printf " sendfax -d %s" poll notify resopt "%s\n", number, files;
printf "\n";
system("cd docq;" tar " cf - " files \
" | " compressor \
" | " encoder " rts." tar ".Z");
}
}
func returnTranscript(pid, canon)
{
system(transcript " " pid " \"" canon "\" 2>&1");
}
func printStatus(s)
{
if (s == "")
print "<no reason recorded>";
else
print s
}
BEGIN { nfiles = 0; }
/^number/ { number = $2; }
/^sender/ { sender = $2; }
/^mailaddr/ { mailaddr = $2; }
/^jobtag/ { jobtag = $2; }
/^status/ { status = $2; }
/^resolution/ { resolution = $2;
if (resolution == 196)
resopt = " -m";
}
/^npages/ { npages = $2; }
/^dirnum/ { dirnum = $2; }
/^ntries/ { ntries = $2; }
/^ndials/ { ndials = $2; }
/^pagewidth/ { pagewidth = $2; }
/^pagelength/ { pagelength = $2; }
/^modem/ { modem = $2; }
/^notify/ { if ($2 == "when done")
notify = " -D";
else if ($2 == "when requeued")
notify = " -R";
}
/^sstatus/ { jstatus = $2; }
/^[!]*post/ { split($2, parts, "/");
if (!match(parts[2], "\.cover")) { # skip cover pages
files = files " " parts[2];
nfiles++;
}
}
/^!tiff/ { split($2, parts, "/"); files = files " " parts[2]; nfiles++; }
/^poll/ { poll = " -p"; }
END {
if (jobtag == "")
jobtag = FILENAME;
print "To: " mailaddr;
print "Subject: notice about facsimile job " jobtag;
print "";
printf "Your facsimile job \"" jobtag "\" to \"" number "\"";
if (why == "done") {
print " was completed successfully.";
printf "Total transmission time was " jobTime ".";
if (status != "")
print " Additional information:\n " status;
} else if (why == "failed") {
printf " failed because:\n ";
printStatus(status);
returnTranscript(pid, canon);
returnToSender();
} else if (why == "requeued") {
printf " was not sent because:\n ";
printStatus(status);
print "";
print "The job will be retried at " nextTry "."
returnTranscript(pid, canon);
} else if (why == "removed" || why == "killed") {
print " was deleted from the queue.";
if (why == "killed")
returnToSender();
} else if (why == "timedout") {
print " could not be sent after repeated attempts.";
returnToSender();
} else if (why == "format_failed") {
print " was not sent because"
print "conversion of PostScript to facsimile failed.";
print "The output from \"" ps2fax "\" was:\n";
print status "\n";
printf "Check your job for non-standard fonts %s.\n",
"and invalid PostScript constructs";
returnToSender();
} else if (why == "no_formatter") {
print " was not sent because";
print "the conversion program \"" ps2fax "\" was not found.";
returnToSender();
} else if (match(why, "poll_*")) {
printf ", a polling request,\ncould not be completed because ";
if (why == "poll_rejected")
print "the remote side rejected your request.";
else if (why == "poll_no_document")
print "no document was available for retrieval.";
else if (why == "poll_failed")
print "an unspecified problem occurred.";
print "";
printf "Total connect time was %s.\n", jobTime;
} else if (why == "file_rejected") {
printf " was rejected because:\n ";
printStatus(status);
returnToSender();
} else {
print " had something happen to it."
print "Unfortunately, the notification script was invoked",
"with an unknown reason"
print "so the rest of this message is for debugging:\n";
print "why: " why;
print "jobTime: " jobTime;
print "pid: " pid;
print "canon: " canon;
print "nextTry: " nextTry;
print "";
print "This should not happen, please report it to your administrator.";
returnToSender();
}
}